package cn.com.surker.production.service;

import cn.com.surker.system.entity.DataSourceInfo;

import java.util.List;
import java.util.Map;

/**
 * @Author lucky
 * @create 2021年07月20 14:41
 * @desc 生产任务单
 */
public interface ITaskService {

	/**
	 * 获取泵送设备种类
	 * @param ds
	 * @return
	 */
	List<Map<String, Object>> queryPumpType(DataSourceInfo ds);

	/**
	 * 获取泵送设备规格
	 * @param ds
	 * @return
	 */
	List<Map<String, Object>> queryPumpNorms(DataSourceInfo ds);

    /**
     * 获取浇筑方式
     * @param ds
     * @return
     */
	List<Map<String, Object>> queryPump(DataSourceInfo ds);

    /**
     * 根据合同编号查询发货单信息
     * @param ds
     * @param cid
     * @return
     */
	List<Map<String, Object>> queryTaskByContractId(DataSourceInfo ds, Integer cid);

    /**
     * 获取泵送设备
     * @param ds
     * @return
     */
	List<Map<String, Object>> queryCasting(DataSourceInfo ds);

    /**
     * 分页查询任务单
     * @param ds
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param projectName 项目名称
     * @param taskCode 任务编号
     * @param clientName 客户名称
     * @param isPro 浇筑方式
     * @param contCode 合同编号
     * @param status 状态(1:正供,2:待供,3:供毕)
     * @param sort 排序列
     * @param sortType 排序方式(0:升序,1:降序)
     * @return
     */
	Map<String, Object> taskPage(DataSourceInfo ds, String startTime, String endTime, String projectName,
						   String taskCode, String clientName, Integer isPro, String contCode,
						   Integer status, Integer offset, Integer limit, String sort, Integer sortType);

    /**
     * 修改任务单信息
     * @param ds
     * @param id 任务单ID
     * @param construction 浇筑部位
     * @param slumps 坍落度
     * @param loadDistance 运距
     * @param person 工地联系人
     * @param phone 工地联系电话
     * @param castingMode 浇筑方式
     * @param address 工地地址
     * @param reviseId 修改人ID
     * @param pumpId 泵车ID
     * @return
     */
	Integer updateTask(DataSourceInfo ds, Integer id, String construction, String slumps, Double loadDistance, String person,
							 String phone, Integer castingMode, String address, Long reviseId, Integer pumpId);

    /**
     * 根据ID查询发货单
     * @param ds
     * @param id 发货单ID
     * @return
     */
	List<Map<String, Object>> queryInvoiceById(DataSourceInfo ds, Integer id);

    /**
     * 分页查询发货单信息
     * @param ds
     * @param conName 合同名称
     * @param licence 车牌号
     * @param site 浇筑部位
     * @param build 施工单位
     * @param startTime 生产开始时间
     * @param endTime 生产结束时间
     * @param castingMode 浇筑方式
     * @param code 发货单编号
     * @return
     */
	Map<String, Object> queryInvoicePage(DataSourceInfo ds, String conName, String licence, String site, Integer castingMode,
								   String build, String startTime, String endTime, String code, Integer invoiceType, Integer offset, Integer limit);

	/**
	 * 上传生产线
	 * @param ds
	 * @param taskId
	 * @param mixId
	 * @return
	 */
	Integer updateProductionLine(DataSourceInfo ds, Long taskId, Long mixId);

	/**
	 * 查询正在运输的车辆
	 * @param ds			数据源
	 *
	 * @return
	 */
	List<Map<String, Object>> queryTransportCar(DataSourceInfo ds,String startTime,String endTime);

	/**
	 * 查询车辆车次信息
	 * @param ds
	 * @param startTime 开始时间
	 * @param endTime 结束时间
	 * @param carNo 车牌号
	 * @param type 0代表车次，1代表砂浆、水、泵送统计
	 * @return
	 */
	List<Map<String, Object>> queryCarTimes(DataSourceInfo ds, String startTime, String endTime, String carNo, Integer type);

	/**
	 * 查询退料列表
	 * @param ds
	 * @return
	 */
	List<Map<String, Object>> queryTransferList(DataSourceInfo ds);

	/**
	 * 根据发货单ID查询退料详情
	 * @param ds
	 * @param id
	 * @return
	 */
	Map<String, Object> queryTransferById(DataSourceInfo ds, Integer id);

	/**
	 * 更新退料方量
	 * @param ds
	 * @param id
	 * @param stere 方量
	 * @param updater 更新人
	 * @return
	 */
	Integer updateTransfer(DataSourceInfo ds, Integer id, String code, String prodTime, Double sendStere, Double stere, String updater);
}
